#ifndef TYPES_H
#define TYPES_H

#include <string>
#include <vector>
#include <cstdint>

using PublicKey = std::string;
using PrivateKey = std::string;
using Signature = std::string;

struct KeyPair {
    PublicKey pk;
    PrivateKey sk;
};

struct Credential {
    std::string user_id;
    PublicKey sm2_pk;
    PublicKey pq_pk;
    Signature ca_sig;
};

struct ZKPProof {
    std::vector<uint8_t> data;
};

struct Beacon {
    std::vector<uint8_t> value;
    uint64_t timestamp;
};

struct TicketRequest {
    std::string ticket_id;
    std::string seat_info;
};

struct TicketResponse {
    bool success;
    std::string msg;
};

#endif // TYPES_H
